A computer network is a collection of interconnected computing devices that exchange data and share resources. In a packet-based network, such as the Internet, the computing devices communicate data by dividing the data into small blocks called packets, which are individually routed across the network from a source device to a destination device. The destination device extracts the data from the packets and assembles the data into its original form. Dividing the data into packets enables the source device to resend only those individual packets that may be lost during transmission.
Certain devices within the network, such as routers, contain control units or routing engines that maintain routing information describing routes through the network. Each route defines a path between locations on the network. Large computer networks, such as the Internet, often include many routers that exchange routing information according to a defined routing protocol, such as the Border Gateway Protocol (BGP). From the routing information, a forwarding engine of the routers generates forwarding information, which is used by the routers to relay packet flows through the network and, more particularly to relay the packet flows to a next hop. Upon receiving an incoming packet, the router examines information within the packet to identify the destination for the packet. Based on the destination, the router forwards the packet in accordance with the forwarding information.
In some cases, an appliance within a router may fail due to a failure of either the operating system running on the appliance or the underlying hardware of the appliance. As a result of the failed router appliance, customers of the computer network may lose service, routing information may need to be updated throughout the computer network to establish routes around the failed router appliance, and/or forwarding information may need to be updated within the router to establish forwarding paths around the failed router appliance. As one solution, a secondary appliance may be used to provide high availability (HA) for the router during operation of a primary appliance. In this case, if the primary appliance within the router fails, the router may perform a graceful switchover to the secondary appliance. In order to provide HA, however, the primary appliance and the secondary appliance must be executing the same operating system. HA protection, therefore, typically cannot be provided during an in-service software upgrade (ISSU) of the primary appliance because, if the ISSU fails to complete, the secondary appliance will be running a different operating system than the primary appliance.